home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / asmutil / afloat.zip / README < prev   
Text File  |  1988-03-16  |  3KB  |  57 lines

  1.              FLOATING-POINT LIBRARY PROJECT
  2.                   By Bob Kline
  3.  
  4.             Copyright Bob Kline 1988
  5.  
  6.     This package contains routines for single-precision floating-
  7. point math routines.  Two parallel libraries are included -- one for use 
  8. with 808x assembly-language programs, the other for use in C programs 
  9. written for the IBM PC family and friends and compiled with a C compiler 
  10. which uses the standard Microsoft small memory model naming and 
  11. parameter conventions (such as Microsoft C or Borland's Turbo C).  The 
  12. first set of routines passes parameters directly in registers, and the 
  13. second passes parameters on the stack.  Each library has its own .DOC 
  14. file and a header file.  Source code, as well as the separately 
  15. assembled object modules are provided on the disk.  Note that there are 
  16. three object modules included in the C library which are not directly 
  17. accessible to the C code in a user's program, as they receive their 
  18. paramters directly in registers: FDECTOBIN, FBINTODEC, and LDIV10.  The 
  19. documentation and source code for these modules are included in the 
  20. materials for the assembly-language library.  A compiler (such as the 
  21. Turbo C compiler) which provides the programmer with the tools for 
  22. direct access to the registers (either via in-line assembly or the 
  23. "pseudo-variables," such as _AX, _BX) would make it possible to call 
  24. these procedures directly from the C code.
  25.  
  26.     Three versions of a sample program are provided to give a very
  27. rough idea of how to call the functions from C or assembler.  The first 
  28. version is in C, and uses the traditional statements for manipulating 
  29. floating-point values and variables.  The program prompts for a 
  30. floating-point number and adds .0001 to it 10000 times, reports the 
  31. result, as well as the amount of time taken to perform the operations.  
  32. The second version is also in C, but uses the functions from the new 
  33. library.  The third is in assembly-language, and uses the assembly-
  34. language version of the new library.  Version 2 is more than 5 times
  35. faster than the first, and the assembly-language version is even a 
  36. little faster than the second version, although the difference is not 
  37. nearly as dramatic.  Note that in version 2 I have also experimented 
  38. with avoiding the use of the run-time library altogether, calling 
  39. functions from a user-supplied library.  In addition, I pared down the 
  40. usual start-up and exit code normally linked in with a C program.  The 
  41. result is an executable program which is more than 10 times smaller than 
  42. the first version, and for some reason even a little smaller than the 
  43. assembly-language version would have been if I had done the assembly as 
  44. a .COM file (the incentive for which is greatly reduced by the 
  45. convenience of using the new .MODEL directives of MASM 5.0, which do not 
  46. support the so-called 'TINY' model needed to convert to the older .COM 
  47. style).
  48.  
  49.         The package was produced as a final project for Ernie Philipps' 
  50. excellent class in micro-assembler programming, taught at the Alexandria 
  51. campus of the Northern Virginia Community College.  Although only the 
  52. lowest-level operations were built into this version of the packages, I 
  53. hope that this start will provide the impetus for later students, 
  54. perhaps as a team project, to build on this beginning by adding some of 
  55. the fancier stuff, such as geometric or exponential functions.  Good 
  56. luck!
  57.